<?php



session_start();
$message='';
header('Content-type: text/html; charset=utf-8');
include('../includes/config.php');
include('../classes/PHPMailer/PHPMailerAutoload.php');
require_once('../classes/database.php');

/********Actualisation de la session...**********/

include('../includes/fonctions.php');
$idconnect=Database::getInstance();
actualiser_session($idconnect);
$id_user=0;
if(!empty($_POST['id_u'])){
	$id_user = $_POST['id_u'];
}else{
	$id_user = $_POST['id_user'];
}


	$querytest = pg_query($idconnect,"SELECT * FROM droit_utilisateur WHERE id_droit=1 and id_user=".$_SESSION['membre_id']);
	$nb1 = pg_num_rows($querytest);
	if(!isset($_SESSION['membre_id']) || $nb1==0){
	header('Location: ../site.php');
	exit();
	}
	else{
	if(empty($_POST)){
		header('Location: ./liste_utilisateurs.php');
		exit();
	}
	else{
		if(!empty($_POST['id_u'])){
			$error =0;
			$query = pg_query($idconnect, "SELECT * FROM utilisateur WHERE id_user=".htmlspecialchars($id_user));
			$back = pg_fetch_assoc($query);

			//Pseudo
			if(isset($_POST['pseudo'])){
				$pseudo = trim($_POST['pseudo']);
				$pseudo_result = checkpseudo($pseudo,$idconnect);
				if($pseudo_result == 'tooshort'){
					$error++;
					$message .= "Le nom d'utilisateur $pseudo est trop court, vous devez en choisir un plus long (minimum 3 caractères). <br/>";}

				else if($pseudo_result == 'toolong'){
						$error++;
					$message .= "Le nom d'utilisateur $pseudo est trop long, vous devez en choisir un plus court (maximum 20 caractères). <br/>";	}


				else if($pseudo_result == 'ok'){
					if($pseudo != $back['login']){
						$sql = pg_query($idconnect,"UPDATE utilisateur SET login='".htmlspecialchars($pseudo, ENT_QUOTES)."' WHERE id_user=".$id_user);
						$message .= "Nom d'utilisateur modifié. <br/>";
					}
				}

				else if($pseudo_result == 'empty'){
					$error++;
					 $message .= "Vous n'avez pas entré de nom d'utilisateur. <br/>";	}
			}

			//Nom
			if(isset($_POST['nom'])){
				$nom = trim($_POST['nom']);
				$np_result = checknom($nom);
				if($np_result == 'tooshort'){
					$error++;
					 $message .="Le nom $nom est trop court, vous devez en choisir un plus long (minimum 2 caractères). <br/>";}

				else if($np_result == 'toolong'){
						$error++;
					$message .=" Le nom $nom est trop long, vous devez en choisir un plus court (maximum 30 caractères). <br/>";}

				else if($np_result == 'nofigure'){
					$error++;
						$message .= "Le nom ne doit contenir que des lettres. <br/>";}

				else if($np_result == 'ok'){
					$_SESSION['nom_info'] = '';
					if($nom != $back['nom']){
						$sql = pg_query($idconnect, "UPDATE utilisateur SET nom='".htmlspecialchars($nom, ENT_QUOTES)."' WHERE id_user=".$id_user);
						$message .="Nom modifié. <br/>";
					}
				}

				else if($np_result == 'empty'){
					$error++;
						$message .= "Vous n\'avez pas entré de nom. <br/>";	}
			}

			//Prénom
			if(isset($_POST['prenom'])){
				$prenom = trim($_POST['prenom']);
				$np_result = checknom($prenom);
				if($np_result == 'tooshort'){
						$error++;
					$message .="Le prenom $prenom est trop court, vous devez en choisir un plus long (minimum 2 caractères). <br/>";}

				else if($np_result == 'toolong'){
						$error++;
					$message .="Le prenom $prenom est trop long, vous devez en choisir un plus court (maximum 30 caractères). <br/>";}

				else if($np_result == 'nofigure'){
						$error++;
					$message .="Votre prénom ne doit contenir que des lettres. <br/>";}

				else if($np_result == 'ok'){
					$_SESSION['prenom_info'] = '';
					if($prenom != $back['prenom']){
						$sql = pg_query($idconnect, "UPDATE utilisateur SET prenom='".htmlspecialchars($prenom, ENT_QUOTES)."' WHERE id_user=".$_POST['id_u']);
						$message .="Prénom modifié. <br/>";
					}
				}
				else if($np_result == 'empty'){
						$error++;
						$message .="Vous n\'avez pas entré de prenom. <br/>";}
			}

			//statut
			if(isset($_POST['cat'])){
				$cat = trim($_POST['cat']);

				if($cat == 'none'){
						$error++;
						$message .="Veuillez sélectionner un statut. <br/>";}

				else{
					$_SESSION['cat_info'] = '';
					if($cat != $back['statut']){
						$sql = pg_query($idconnect, "UPDATE utilisateur SET statut='".htmlspecialchars($cat, ENT_QUOTES)."' WHERE id_user=".$id_user);
						$message .="Statut modifié. <br/>";
					}
				}
			}

		


			//mail
			if(isset($_POST['mail'])){
				$mail = trim($_POST['mail']);
				$mail_result = checkmail($mail,$idconnect);
				if($mail_result == 'isnt'){
					$error++;
						$message .="Le mail $mail n'est pas valide. <br/>";	}

				else if($mail_result == 'exists'){
					if($mail!=$back['email']){
							$error++;
						$message .="Le mail $mail est déjà pris. <br/>";}
					else{ $_SESSION['mail_info'] = 'ok';}
				}

				else if($mail_result == 'ok'){$_SESSION['mail_info'] = 'ok';
				
				
					
				
				}
				else if($mail_result == 'empty'){
						$error++;
					$message .="Vous n'avez pas entré de mail. <br/>";}
				
			}

			//mail suite
			if(isset($_POST['mail_verif']) || (isset($_SESSION['mail_info']) && $_SESSION['mail_info']=='ok')){
				$mail_verif = trim($_POST['mail_verif']);
				$mail_verif_result = checkmailS($mail_verif, $mail);
				if($mail_verif_result == 'different'){
						$error++;
					$message .="Le mail de vérification diffère du mail. <br/>";}

				else if($mail_result == 'ok'){
					if($mail!=$back['email']){
						$sql = pg_query($idconnect, "UPDATE utilisateur SET email='".htmlspecialchars($mail_verif, ENT_QUOTES)."' WHERE id_user=".$id_user);
						$message .="Mail modifié. <br/>";
									/* envoye de mail � l'administraeur pour affect� au compte les droit */
								$results_messages = array();
								 
								$mail = new PHPMailer(true);
								$mail->CharSet = 'utf-8';
								 
								class phpmailerAppException extends phpmailerException {}
								 
								try {
								$to = htmlspecialchars($mail_verif, ENT_QUOTES);
								if(!PHPMailer::validateAddress($to)) {
								  throw new phpmailerAppException("Email address " . $to . " is invalid -- aborting!");
								}
								$mail->isSMTP();
								//$mail->SMTPDebug  = 0;
								$mail->Host       = SMTP_HOST;
								$mail->Port       = SMTP_PORT;
								$mail->SMTPSecure = "none";
								$mail->SMTPAuth   = false;
								$mail->addReplyTo(SENDER_EMAIL);
								$mail->From       = SENDER_EMAIL;
								$mail->FromName   = SENDER_NAME;
								$mail->addAddress(htmlspecialchars($mail_verif, ENT_QUOTES), htmlspecialchars($nom, ENT_QUOTES));
								$mail->Subject  = "validation compte mmdn";
								$body ='Bonjour , votre compte mmdn a été valider et vous avez acquis des nouvelles droits';
								$mail->WordWrap = 80;
								$mail->msgHTML($body, dirname(__FILE__), true); //Create message bodies and embed images
						
								 
								try {
								 $result= $mail->send();
								  $results_messages[] = "Message has been sent using SMTP";
								}
								catch (phpmailerException $e) {
								  throw new phpmailerAppException('Unable to send to: ' . $to. ': '.$e->getMessage());
								}
								}
								catch (phpmailerAppException $e) {
								  $results_messages[] = $e->errorMessage();
								}
								
								
						
						
						
					}
				}
			}
			
			//vider les droits du membre de la table doit_utilisateur
			 $sql = pg_query($idconnect, "DELETE FROM droit_utilisateur WHERE id_user=".$id_user);
			if(isset($_POST['droitv']) || isset($_POST['droits']) ){
			
			 
			
			// remplir les droits de visualisation du membre inscrit
			  for($i = 0 , $c = count($_POST['droitv']); $i < $c ; $i++){
			  	$req="INSERT INTO droit_utilisateur( id_user, id_droit) VALUES (".$id_user.", ".$_POST['droitv'][$i].")";
			  pg_query($idconnect,$req);
		      }
		
			// remplir les droits de saisie du membre inscrit
		      for($i = 0 , $c = count($_POST['droits']); $i < $c ; $i++){
		 	  pg_query($idconnect,"INSERT INTO droit_utilisateur( id_user, id_droit) VALUES (".$id_user.", ".$_POST['droits'][$i].")");
			  }}
			

			
		}
	}
}

?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="../style.css" />
         <!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <!--[if lte IE 7]>
        <link rel="stylesheet" href="style_ie.css" />
        <![endif]-->
        <title>Base de données Microcèbes</title>

        <script src="../js/verif_form.js"></script>
        <script>
			function verif_form(f){ //vérification du formulaire avant l'envoie au serveur
				var userOk = verif(f.pseudo);
				var mailOk = verifMail(f.mail);
				var nomOk = verifNom(f.nom);
				var prenomOk = verifNom(f.prenom);
				var statutOk = verifSelect(f.cat);
				var saisieOk = verifSelect(f.saisie);
				var lectOk = verifSelect(f.lecture);

				if(userOk && mailOk && nomOk && prenomOk && statutOk && saisieOk && lectOk){return true;}
				else{
					console.log(mailOk);
					alert("Veuillez remplir correctement tous les champs");
					return false;
				}
			}

			function verifMail(champ){
				//vérification de la syntaxe de l'adresse mail
				var name=champ.name;
				var regex=/^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;

				if(champ.value.length>0 && regex.test(champ.value)){
					document.getElementById("erreur_"+name).style.display="none";
					return true;
				}
				else{
					document.getElementById("erreur_"+name).style.display="inline";
					return false;
				}
			}

			function verifNom(champ){
				//vérifcation que le champ ne contient pas de chiffre
				var name=champ.name;
				var regex=/^[A-Za-z -]+$/

				if(champ.value.length>0 && regex.test(champ.value)){
					document.getElementById("erreur_"+name).style.display="none";
					return true;
				}
				else{
					document.getElementById("erreur_"+name).style.display="inline";
					return false;
				}
			}
			 function CheckBox1(){
    			var cb2_state2 = document.getElementById('checkallv').checked;
    			for(i = 1; i < 10; i++){
    				
    			document.getElementById(i).checked = cb2_state2;
   			}
   			 }
				 function CheckBox(){
    			var cb2_state2 = document.getElementById('checkall').checked;
    			for(i = 10; i < 21; i++){
    				
    			document.getElementById(i).checked = cb2_state2;
   			}
   			 }
        </script>

    </head>

    <body>

		<?php include("../menu.php"); ?>

		<section id="main">
			<header>
				<h1>Modification des informations utilisateur</h1>
			</header>
			<article>
				<p class="code2">
					<?php echo $message; ?>
				</p>

				<?php if(!empty($_POST['id_user']) || !empty($error)) {
					$query = pg_query($idconnect,"SELECT * FROM Utilisateur WHERE id_user=".$id_user);
					$nb = pg_num_rows($query);
					if($nb!=0){
						$back=pg_fetch_assoc($query)

					?>
					<a href="liste_utilisateurs.php">&laquo; Liste d'utilisateurs</a>
			<br><br>
				<form name="monForm" method="post" action="" onsubmit="return verif_form(this)">
					<p>
					<label class="label4">Nom d'utilisateur:</label><input class="box" type="text" width="10" name="pseudo" value="<?php if($back['login']) echo $back['login'] ;?>">
					<span class="code3" id="erreur_pseudo">* Remplir le champ</span><br/>
					<label class="label4">Email:</label><input class="box" type="text" width="20" name="mail" value="<?php if($back['email']) echo $back['email']; ?>">
					<span class="code3" id="erreur_mail">* Champ invalide</span><br/>

					<label class="label4">Email (vérification):</label><input class="box" type="text" width="20" name="mail_verif" value="<?php if($back['email']) echo $back['email']; ?>"><em>(vérification, si champ précédent modifié)</em><br/>

					<label class="label4">Nom:</label><input class="box" type="text" width="10" name="nom" value="<?php if($back['nom']) echo $back['nom']; ?>">
					<span class="code3" id="erreur_nom">* Remplir le champ (pas de chiffres ni de caractères spéciaux)</span><br/>

					<label class="label4">Prénom:</label><input class="box" type="text" width="10" name="prenom" value="<?php if($back['prenom']) echo $back['prenom']; ?>">
					<span class="code3" id="erreur_prenom">* Remplir le champ (pas de chiffres ni de caractères spéciaux)</span><br/>

					<label class="label4">Statut:</label>
					<select id="ListeElement" name="cat" class="box">
						<option value="none">Sélection</option>
						<option value="Biatoss U710" <?php if($back['statut'] && $back['statut']=="Biatoss U710") echo "selected=\"selected\""; ?>>Biatoss U710</option>
						<option value="Chercheur U710" <?php if($back['statut'] && $back['statut']=="Chercheur U710") echo "selected=\"selected\""; ?>>Chercheur U710</option>
						<option value="Personnel Temporaire U710" <?php if($back['statut'] && $back['statut']=="Personnel Temporaire U710") echo "selected=\"selected\""; ?>>Personnel Temporaire U710</option>
						<option value="Collaborateur extérieur" <?php if($back['statut'] && $back['statut']=="Collaborateur extérieur") echo "selected=\"selected\""; ?>>Collaborateur extérieur</option>
						<option value="Visiteur" <?php if($back['statut'] && $back['statut']=="Visiteur") echo "selected=\"selected\""; ?>>Visiteur</option>
					</select></br>
					
					<?php
					if($id_user != 1){
					?>
					
						<label class="label4">Droits de saisie:</label>
						<table  bordercolor="#FFFFFF"  class="box">
							<td><input type="checkbox"  id="checkall"   name="checkall"  onclick="CheckBox();" >cocher tout</td>
						</tr>
						<?php
						$query2 = pg_query($idconnect, "SELECT id_droit,label FROM droit where type='saisie' order by id_droit");
						$ids = 10;
						while($back2=pg_fetch_assoc($query2)){
							$query = pg_query($idconnect, "SELECT * FROM droit_utilisateur where id_user=".$id_user."  and id_droit=".$back2['id_droit']);
							$nb = pg_num_rows($query);
							$check= "";
							if($nb != 0) $check= 'checked';
							echo '<tr>';
					   	echo '<td><input type="checkbox"  '.$check.' id="'.$ids.'"   name="droits[]"  value='.$back2['id_droit'].' >'.$back2['label'].'</td>';
						echo '</tr>';
							$ids++;
						}
						
						?>
					    </table>
				
						</br>
					    <label class="label4">Droits de visualisation:</label>
						<table  bordercolor="#FFFFFF"  class="box">
							<td><input type="checkbox"  id="checkallv"   name="checkallv"  onclick="CheckBox1();" >cocher tout</td>
						<?php
						$query2 = pg_query($idconnect, "SELECT id_droit,label FROM droit where type='visualisation'");
						$idv = 1;
						while($back2=pg_fetch_assoc($query2)){
							$r="SELECT * FROM droit_utilisateur where id_user=".$id_user."  and  id_droit=".$back2['id_droit'];
							$query = pg_query($idconnect, $r);
							$nb = pg_num_rows($query);
							$check= "";
							
							if($nb != 0) $check= 'checked';
							
					    echo '<tr>';
					   	echo '<td><input type="checkbox"  '.$check.' id="'.$idv.'"  name="droitv[]"  value='.$back2['id_droit'].' >'.$back2['label'].'</td>';	
					    echo '</tr>';
						$idv++;
						}
							
						?>
						</table>
				
				
					<?php
					}
					?>
					
					<input type="hidden" name="id_u" value="<?php echo $id_user ;?>" >
					<?php } 
					}
						else{
							header('Location: ./liste_utilisateurs.php');
							exit();
						}
					?>

					<input type="submit" class="bouton2" value="Enregistrer les modifications">
					</p>
				</form>
			</article>
		</section>
	</body>
</html>
